#include "IniEx.h"


CIniEx::CIniEx(void)
{
}

CIniEx::CIniEx( const tstring strFilePath )
:m_strFilePath(strFilePath)
{

}

CIniEx::CIniEx( const tstring strFilePath, const tstring strAppName )
:m_strFilePath(strFilePath)
,m_strAppName(strAppName)
{

}

CIniEx::~CIniEx(void)
{
}

void CIniEx::SetIniFilePath( const tstring strFilePath )
{
    ASSERT(!strFilePath.empty());

    if (m_strFilePath == strFilePath)
    {
        return;
    }

    m_strFilePath = strFilePath;
}

void CIniEx::SetAppName( const tstring strAppName )
{
    ASSERT(!strAppName.empty());

    if (m_strAppName == strAppName)
    {
        return;
    }

    m_strAppName = strAppName;
}

DWORD CIniEx::ReadString( const tstring strKeyName, tchar* szBuffer, DWORD dwBufferSize, const tstring strDefaultValue /*= _T("")*/ )
{
    ASSERT(szBuffer);
    ASSERT(dwBufferSize > 0);
    return GetPrivateProfileString(m_strAppName.c_str(), strKeyName.c_str(), strDefaultValue.c_str(), szBuffer, dwBufferSize, m_strFilePath.c_str());
}

BOOL CIniEx::WriteString( const tstring strKeyName, const tstring strValue )
{
    ASSERT(!strValue.empty());
    return WritePrivateProfileString(m_strAppName.c_str(), strKeyName.c_str(), strValue.c_str(), m_strFilePath.c_str());
}

int CIniEx::ReadInt( const tstring strKeyName, int nDefaultValue /*= 0*/ )
{
    return (int)GetPrivateProfileInt(m_strAppName.c_str(), strKeyName.c_str(), nDefaultValue, m_strFilePath.c_str());
}

BOOL CIniEx::WriteInt( const tstring strKeyName, int nValue )
{
    tchar szBuffer[MKY_DEFAULT_BUF_SIZE];
    _stprintf(szBuffer, _T("%d"), nValue);
    return WriteString(strKeyName.c_str(), szBuffer);
}
